<?php
/****************************************************************
** Application : Nova
**
** Les buts de cet application sont de fournir un outils de partage
** de l'information pour le site membre "nova"
**
** Les auteurs :
** 		Design Web 			: Serge Peter
** 		Developpement PHP 	: Serge Peter
** 		Etudes 				: Sandrine Guihenneuc
**		Feuille de style	: Sandrine Guihenneuc
** Fichier CalAdmin.php :
** 		Ce fichier contient les informations de connexion sur la base de
**      mysql
**
*****************************************************************/


function show_admin($pdb,  $service_id, $sub_id)
{

	if ($_SESSION['ponderation'] >=10) {

	switch ($sub_id)
	{
	    case "users";
	        treate_users($pdb,  $service_id);
	    break;

	    case "services";
	        treate_services($pdb,  $service_id);
	    break;

	    case "types";
	        treate_types($pdb,  $service_id);
	    break;

	    case "matrice";
	        treate_matrice($pdb,  $service_id);
	    break;

	    case "info";
	        treate_info($pdb,  $service_id);
		break;

		case "contacts";
	        treate_contacts($pdb,  $service_id);
	    break;
		case "comment";
		    treate_comment($pdb,  $service_id);
		break;

	    default;
		    ?>

			<div class="admin">
			<center>
			<fieldset>
			<legend>Administration</legend>
			<table width="100%"  border="0">
              <tr>
                <th width="85%" scope="col">Gestion des </th>
                <th width="15%" scope="col">Actions</th>
              </tr>
              <tr>
                <td>Utilisateurs</td>
                <td>
					<a href="<?php echo INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=users"; ?>"><?php echo IMG_3; ?></a>
					<a href="<?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=users"; ?>"><?php echo IMG_4; ?></a> </td>
			  </tr>
              <tr>
                <td>Services</td>
                <td>
					<a href="<?php echo INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=services"; ?>"><?php echo  IMG_3; ?></a>
					<a href="<?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=services"; ?>"><?php echo IMG_4; ?></a></td>
              </tr>
              <tr>
                <td>Types d'utilisateurs et droits </td>
                <td>
					<a href="<?php echo INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=types"; ?>"><?php echo  IMG_3; ?></a>
					<a href="<?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=types"; ?>"><?php echo IMG_4; ?></a></td>
              </tr>
              <tr>
                <td>Matrice Type d'utilisateurs / Services </td>
                <td>
					<a href="<?php echo INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=matrice"; ?>"><?php echo  IMG_3; ?></a>
					<a href="<?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=matrice"; ?>"><?php echo IMG_4; ?></a></td>
              </tr>
              <tr>
                <td>Gestion de l'information </td>
                <td>
					<a href="<?php echo INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=info"; ?>"><?php echo  IMG_3; ?></a>
					<a href="<?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=info"; ?>"><?php echo IMG_4; ?></a></td>
              </tr>
              <tr>
                <td>Gestion des contacts </td>
                <td>
					<a href="<?php echo INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=contacts"; ?>"><?php echo  IMG_3; ?></a>
					<a href="<?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=contacts"; ?>"><?php echo IMG_4; ?></a></td>
              </tr>
            </table>
			</fieldset>
			</center>
			</div>
	        <p>
              <?php break;
	}  // switch
	} // if check rights
	else {
		print_err_right_on_page(INDEX_FORM);
	}
}

function treate_services($db,  $service_id)
{
/* check des droits */
if ($_SESSION['ponderation'] >=10) {

	if (isset($_GET["adm_id"]))
		$id = $_GET['adm_id'];
	else
		$id=0;
	
	if (isset($_GET["adm_action"]))
		$action = $_GET['adm_action'];
	else
		$action=0;

/* variable "globale" */
$table_name = TB . 'services';
$titre = "Services";
$shortname="services";
$label="service";

/* application du mode par defaut.
	 Le mode "action" est passe en parametre de l'url ...?action=SELECTION par example */
if (empty ($action))
	$action = SELECTION;

/* travail en fonction des actions */
switch($action)
{
	case 0;   // Mode selection

	    /* on lance la query */
	    $sql = "SELECT * FROM " . $table_name . " ORDER BY ordre";
	    $result = $db->query($sql);

	    /* on initialise la table */
	    $colHeaders = array("id", "Nom", "Chemin URL", "Label", "Target", "Ordre", "Mode", "Info", "Cible",  "Actions");
	    $headerStyle = "bgcolor=grey nowrap";
	    $table = new HTML_Table("border=0 cellpadding=1 cellspacing=2 ");
	    $table->addRow($colHeaders, "", "TH");
		?>
			<script language="javascript">
			function confirmation(url, msg)
			{
			var answer = confirm (msg)
			if (answer)
			window.location=url
			}
			</script>
		<?php

	    /* on remplit la table */
	    while ($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
	        $table->addRow(array($row["id"],
	        $row["nom"],
	        $row["chemin_url"],
	        $row["url_label"],
	        $row["url_target"],
			$row["ordre"],
			$row["action"],
			$row["info_id"],
			$row["info_cible"],
	          "<a href=\"" . INDEX_FORM . "?adm_action=2&adm_id=" . $row["id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_1 ."</a>"
			. "<a href=\"" . INDEX_FORM . "?adm_action=3&adm_id=" . $row["id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_2 ."</a>"));
	    }
		table_display($table, $titre, "admin");

		$url=INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=" . $shortname ;
		$label=MSG_CONT_3;
		print_url($url, $label);
		break;

case 3;   // Mode effacer

		$url_back = INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;
		del_record_and_go_back($db,  $service_id, $table_name, $id, $url_back);
	    break;

case 1 or 2;  // mode ajouter ou editer

	    /* definir la query */
	    $sql = 'select * from ' . $table_name . '
	    where id = "' . $id . '"';

	    /* lancer la query */
	    $res = $db->query($sql);

	    // check des erreurs DB
	    if ( DB::isError( $res = $db->query( $sql ) ) ) {
		    echo 'Erreur de base de donnees : ',DB::errorMessage($res), '<br>';
	    }else{

	       	/* pas d'erreur base de donnees */
	        /* assignation dans variables session */
	       	if (is_array($row = $db->getRow($sql))) {
	      	list($id,
		        $nom,
		        $chemin_url,
		        $url_label,
		        $url_target,
		        $ordre,
				$info_action,
				$info_id,
				$info_cible) = $row;
	      	}

	      	/* il s'agit d'un nouveau utilisateur , on essigne les valeurs par defaut */
	      	if ($_GET['adm_id'] == "NA"){
	            $id = null ;
	            $nom = "nom du service" ;
	            $chemin_url = null ;
	            $url_label = null;
	            $url_target = null;
	            $ordre = 0;
				$info_action = 0;
				$info_id = 0;
				$info_cible = "vide";
	        }

	        /*
	        ** creation du formulaire a l'aide des fonction de HTML_QuickForm
	        */
	        $form = new HTML_QuickForm('frm' . $table_name, 'post',  INDEX_FORM . '?adm_action=' . $action . '&adm_id=' . $id . '&id=' . $service_id . '&sub_id=' . $shortname);
	        $form->addElement('hidden', 'id', 'Id', array('value' => $id));
	        $form->addElement('text', 'nom', 'Nom', array('value' => $nom));
	        $form->addElement('text', 'chemin_url', 'Chemin URL', array('value' => $chemin_url));
	        $form->addElement('text', 'url_label', 'Label', array('value' => $url_label));

			$url_target_a = array(
				"" => "Pas de target",
	            "_blank"=>"Blank",
	            "_self"=>"Self",
	            "_parent"=>"Parent",
	            "_top"=>"Top"
	            );

	        $form->addElement('select', 'url_target', 'Url Target', $url_target_a);
	        $form->setDefaults(array('url_target' => $url_target));

	        $form->addElement('text', 'ordre', 'ordre', array('value' => $ordre));

			$action_a = array(
				"" => "Pas d'action",
	            "10"=>"Liste",
	            "11"=>"Page",
	            "12"=>"Url",
	            "13"=>"Inclusion"
	            );

	        $form->addElement('select', 'action', 'Action', $action_a);
	        $form->setDefaults(array('action' => $info_action));

			$res = $db->getAssoc('select id, titre from ' . TB . 'informations order by titre');
		    $form->addElement('select', 'info_id', 'Info id', $res, 'id=id');
	    	$form->setDefaults(array('info_id' => $info_id ));

			$res = $db->getAssoc('select nom, nom from ' . TB . 'information_cibles order by nom');
		    $form->addElement('select', 'info_cible', 'Info cible', $res, 'nom=nom');
	    	$form->setDefaults(array('info_cible' => $info_cible ));

	        //$form->addElement('text', 'info_cible', 'Info cible', array('value' => $info_cible));

	        $form->addRule('nom', 'Vous devez saisir nom', 'required', '', 'client');
	        //$form->addRule('chemin_url', 'Vous devez saisir un URL', 'required', '', 'client');
	        $form->addRule('url_label', 'Vous devez saisir un label', 'required', '', 'client');

	        $form->applyFilter('nom','trim') ;
	        //$form->applyFilter('chemin_url','trim') ;
	        $form->applyFilter('url_label','trim') ;

	        $form->setRequiredNote('<span style="color: #ff0000">*</span> = champs obligatoires');
	        $form->setJsWarnings('Erreur de saisie','Veuillez corriger');

	        $form->addElement('submit', 'bouton_effacer', 'Envoyer');

    		/* c'est quand l'utlisateur presse le bouton .... */
	        if ($form->validate()) {  //form

	            /* on recupere les valeurs du formulaire */
	            $fields_values = array(
	            'nom' => $form->exportValue('nom'),
	            'chemin_url' => $form->exportValue('chemin_url'),
	            'url_label' => $form->exportValue('url_label'),
	            'url_target'  => $form->exportValue('url_target'),
	            'ordre'  => $form->exportValue('ordre'),
	            'action'  => $form->exportValue('action'),
	            'info_id'  => $form->exportValue('info_id'),
	            'info_cible'  => $form->exportValue('info_cible'));

	            /* test pour savoir si on fait un update ou un insert */
	            if ($action == 1 ){
	                $resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
	            }else{

	                $resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_UPDATE, "id = $id");
	            }

	            /* check des erreurs */
	            if (DB::isError($resins)) {
					/* utilisation d'une fonction de print de message d'erreur */
					print_insupd_err(MSG_INSUPG_ERR, $resins->getMessage());
					form_display($form, "Edition d'un " . $label, "forms", "100%");

				}else{
					$url_back=INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname ;
					go_back($url_back, MSG_INSUPD_RECORD,1);
	            }
	        }else{

  				form_display($form, "Edition d'un " . $label, "forms", "100%");

	            ?>
	            <p>
	            <a href=" <?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;  ?> ">Retour aux <?php echo $titre; ?></a>
	            </p>
	            <?php } //form
	    } //erreur base de donnees
	    break;

	} //switch
} //if check des droits

	else {
		print_err_right_on_page(INDEX_FORM);
	}
}

function treate_types($db,  $service_id)
{
/* check des droits */
if ($_SESSION['ponderation'] >=10) {

/* lecture des variable */
	if (isset($_GET["adm_id"]))
		$id = $_GET['adm_id'];
	else
		$id=0;
	
	if (isset($_GET["adm_action"]))
		$action = $_GET['adm_action'];
	else
		$action=0;
		

/* variable "globale" */
$table_name = TB . "utilisateur_types";
$titre = "Utilisateur types";
$shortname="types";

/* application du mode par defaut.
	 Le mode "action" est passe en parametre de l'url ...?action=SELECTION par example */
if (empty ($action))
	$action = SELECTION;

/* travail en fonction des actions */
switch($action)
{
	case 0;   // Mode selection

		/* on lance la query */
	    $sql = "SELECT * FROM " . $table_name . " ORDER BY ponderation";
	    $result = $db->query($sql);

	    /* on initialise la table */
	    $colHeaders = array("id", "Nom", "Ponderation", "Actions");
	    $headerStyle = "bgcolor=grey nowrap";
	    $table = new HTML_Table("border=0 cellpadding=1 cellspacing=2 ");
	    $table->addRow($colHeaders, "", "TH");

	    /* on remplit la table */
	    while ($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
	        $table->addRow(array($row["id"],
	        $row["nom"],
	        $row["ponderation"],
	          "<a href=\"" . INDEX_FORM . "?adm_action=2&adm_id=" . $row["id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_1 ."</a>"
			. "<a href=\"" . INDEX_FORM . "?adm_action=3&adm_id=" . $row["id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_2 ."</a>"));
	    }
		table_display($table, $titre, "admin");
		$url=INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=" . $shortname ;
		$label=MSG_CONT_3;
		print_url($url, $label);

		break;

case 3;   // Mode effacer

		$url_back = INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;
		del_record_and_go_back($db,  $service_id, $table_name, $id, $url_back);
	    break;

case 1 or 2;  // mode ajouter ou editer

	    /* definir la query */
	    $sql = 'select * from ' . $table_name . '
	    where id = "' . $id . '"';

	    /* lancer la query */
	    $res = $db->query($sql);

	    // check des erreurs DB
	    if ( DB::isError( $res = $db->query( $sql ) ) ) {
		    echo 'Erreur de base de donnees : ',DB::errorMessage($res), '<br>';
	    }else{

	        /* pas d'erreur base de donnees */
	        /* assignation dans variables session */
	        if (is_array($row = $db->getRow($sql))) {
	            list($id,
	            $nom, $ponderation) = $row;
	        }

	        /* il s'agit d'un nouveau utilisateur , on essigne les valeurs par defaut */
	        if ($_GET['id'] == "NA"){
	            $id = null ;
	            $nom = "nom du type" ;
        	    $ponderation = "ponderation" ;
	        }

	        /*
	        ** creation du formulaire a l'aide des fonction de HTML_QuickForm
	        */
	        $form = new HTML_QuickForm('frm' . $table_name, 'post',  INDEX_FORM . '?adm_action=' . $action . '&adm_id=' . $id . '&id=' . $service_id . '&sub_id=' . $shortname);
	        $form->addElement('hidden', 'id', 'Id', array('value' => $id));
	        $form->addElement('text', 'nom', 'Nom', array('value' => $nom));
       	        $form->addElement('text', 'ponderation', 'Ponderation', array('value' => $ponderation));

	        $form->addRule('nom', 'Vous devez saisir nom', 'required', '', 'client');
       	        $form->addRule('ponderation', 'Vous devez saisir une ponderation', 'required', '', 'client');

	        $form->applyFilter('nom','trim') ;

	        $form->setRequiredNote('<span style="color: #ff0000">*</span> = champs obligatoires');
	        $form->setJsWarnings('Erreur de saisie','Veuillez corriger');

	        $form->addElement('submit', 'bouton_effacer', 'Envoyer');

	        /* c'est quand l'utlisateur presse le bouton .... */
	        if ($form->validate()) {  //form

	            /* on recupere les valeurs du formulaire */
	            $fields_values = array(
	            'nom' => $form->exportValue('nom'),
                    'ponderation' => $form->exportValue('ponderation'));

	            /* test pour savoir si on fait un update ou un insert */
	            if ($action == 1 ){

	                $resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
	            }else{

	                $resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_UPDATE, "id = $id");
	            }

	            /* check des erreurs */
	            if (DB::isError($resins)) {
					/* utilisation d'une fonction de print de message d'erreur */
					print_insupd_err(MSG_INSUPG_ERR, $resins->getMessage());
	  				form_display($form, "Edition d'un type", "forms", "100%");

	            }else{
					$url_back=INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;
					go_back($url_back, MSG_INSUPD_RECORD,1);
	            }
	        }else{
 				form_display($form, "Edition d'un type", "forms", "100%");
	            ?>
	            <p>
	            <a href=" <?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;  ?> ">Retour aux <?php echo $titre; ?></a>
	            </p>
	            <?php } //form
	    } //erreur base de donnees
	    break;

} //switch
} //if check des droits
	else {
		print_err_right_on_page(INDEX_FORM);
	}
}


function treate_matrice($db,  $service_id)
{
/* check des droits */
if ($_SESSION['ponderation'] >=10) {

/* lecture des variable */
$utilisateur_type_id = $_GET['adm_id1'];
$data_service_id = $_GET['adm_id2'];

$action = $_GET['adm_action'];

/* variable "globale" */
$table_name    = TB . 'matrice_utilisateurs_services';
$titre = "Matrice utilisateurs services";
$shortname="matrice";

/* application du mode par defaut.
	 Le mode "action" est passe en parametre de l'url ...?action=SELECTION par example */
if (empty ($action))
	$action = SELECTION;

/* travail en fonction des actions */
switch($action)
{
	case 0;   // Mode selection

	    /* on lance la query */
	    $sql = "SELECT ma.utilisateur_type_id, ut.nom as utilisateur_type, ma.service_id, se.nom as service
	    FROM " . TB . "services se, " . TB . "utilisateur_types ut, " . TB . "matrice_utilisateurs_services ma
	    WHERE se.id = ma.service_id AND ut.id = ma.utilisateur_type_id
	    ORDER by 1, 2";
	    $result = $db->query($sql);


	    /* on initialise la table */
	    $colHeaders = array("Type Id", "Utilisateur type", "Service Id", "Service", "Actions");
	    $headerStyle = "bgcolor=grey nowrap";
	    $table = new HTML_Table("border=0 cellpadding=1 cellspacing=2 ");
	    $table->addRow($colHeaders, "", "TH");

	    /* on remplit la table */
	    while ($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
	        $table->addRow(array($row["utilisateur_type_id"],
	        $row["utilisateur_type"],
	        $row["service_id"],
	        $row["service"],
	        "<a href=\"" . INDEX_FORM . "?adm_action=3&adm_id1=" . $row["utilisateur_type_id"] . "&adm_id2=" . $row["service_id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_2 ."</a>"));
	    }
		table_display($table, $titre, "admin");
		$url=INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=" . $shortname ;
		$label=MSG_CONT_3;
		print_url($url, $label);
		break;

case 3;   // Mode effacer

	    /* DEBUG
	    echo "effacer<br>";
	    */

	    /* definir la query */
 		$sql = 'delete from ' . $table_name .'
	        	where service_id = ' . $data_service_id . ' and utilisateur_type_id = ' . $utilisateur_type_id ;

	    /* lancer la query */
	    $res = $db->query($sql);

	    /* test des erreurs */
	    if ( DB::isError( $res = $db->query( $sql ) ) ) {
	    	echo 'Erreur de base de donnees : ',DB::errorMessage($res), '<br>';
	    }else{
			$url_back=INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname ;
			go_back($url_back, "L'enregistrement selectionne est efface.",1);
	    }
	    break;

case 1 or 2;  // mode ajouter ou editer

	        /* il s'agit d'un nouveau utilisateur , on essigne les valeurs par defaut */
	        if ($_GET['id'] == "NA"){
	            $utilisateur_type_id = null ;
	            $service_id = null ;
	        }

	        /*
	        ** creation du formulaire a l'aide des fonction de HTML_QuickForm
	        */
	        $form = new HTML_QuickForm('frm' . $table_name, 'post',  INDEX_FORM . '?adm_action=' . $action . '&adm_id=' . $id . '&id=' . $service_id . '&sub_id=' . $shortname);
	        $res1 = $db->getAssoc('select id, nom from ' . TB . 'utilisateur_types order by nom');
	        $form->addElement('select', 'utilisateur_type_id', 'Utilisateur type', $res1, 'id=id');
	        $form->setDefaults(array('utilisateur_type_id' => $utilisateur_type_id));

	        $res2 = $db->getAssoc('select id, nom from ' . TB . 'services order by nom');
	        $form->addElement('select', 'service_id', 'Service', $res2, 'id=id');
	        $form->setDefaults(array('service_id' => $service_id));

	        $form->addRule('utilisateur_type_id', 'Vous devez saisir utilisateur type', 'required', '', 'client');
	        $form->addRule('service_id', 'Vous devez saisir un service', 'required', '', 'client');

	        $form->setRequiredNote('<span style="color: #ff0000">*</span> = champs obligatoires');
	        $form->setJsWarnings('Erreur de saisie','Veuillez corriger');

	        $form->addElement('submit', 'bouton_effacer', 'Envoyer');

	        /* c'est quand l'utlisateur presse le bouton .... */
	        if ($form->validate()) {  //form

	            /* on recupere les valeurs du formulaire */
	            $fields_values = array(
	            'utilisateur_type_id' => $form->exportValue('utilisateur_type_id'),
	            'service_id' => $form->exportValue('service_id'));


	            /* DEBUG
	            echo "Action : " . $action ."<br>";
	            echo "Id : " . $id . "<br>";
	            */

	            /* test pour savoir si on fait un update ou un insert */
	            $resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);


	            /* check des erreurs */
	            if (DB::isError($resins)) {
					/* utilisation d'une fonction de print de message d'erreur */
					print_insupd_err(MSG_INSUPG_ERR, $resins->getMessage());
	 				form_display($form, "Edition d'un lien entre droit", "forms", "100%");

	            }else{
					$url_back=INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname ;
					go_back($url_back, MSG_INSUPD_RECORD,1);
	            }
	        }else{
				form_display($form, "Edition d'un droit", "forms", "100%");
	            ?>
	            <p>
	            <a href=" <?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;  ?> ">Retour aux <?php echo $titre; ?></a>
	            </p>
	            <?php } //form
	    break;

		} //switch
	} //if check des droits
	else {
		print_err_right_on_page(INDEX_FORM);
	}
}
?>

